#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>


// char * getString(){
//     char stu[] = "abcd";
//     return stu;
// }

void test1(){
    char de[] = "bcde";
    char * p = NULL;
    p = de;
   
    printf("string is : %s\n", de);
    printf("string is : %s\n", p);
    
    // p = getString();


}


int * getSpace(){
   int * p =  malloc(sizeof(int) * 5);   // 地址类型
   if( p == NULL){
       return ;
   }

   for (int i=0;i<5;i++){
       p[i] = i+100;
   }
   return p;
}

void test2(){
    int * p = getSpace();

    for(int i=0;i<5;i++){
        printf("num is: %d\n", p[i]);
    }
    // 堆区 手动开辟 手动释放
    free(p);
    p = NULL;
}

// 注意事项

void allocateSpace(char * pp){
    char * temp = malloc(100);
    memset(temp,0,100);
    strcpy(temp, "hello world");
    pp = temp;
}

void allocateSpace1(char ** pp){
    char * temp = malloc(100);
    memset(temp,0,100);
    strcpy(temp, "hello world");
    *pp = temp;
}

void test3(){
    char * p = NULL;
    allocateSpace(p);    // 没有影响到p
    printf("%s\n", p); // NULL

    allocateSpace1(&p);
     printf("%s\n", p); // NULL

   

}


int main(){

    test1();

    test2();


    system("pause");
    return EXIT_SUCCESS;
}